/********************************Copyright (c)**********************************\
**
**                   (c) Copyright 2023, Main, China, QD.
**                           All Rights Reserved
**
**                                 By(wo4fisher)
**                           http://www.wo4fisher.com
**
**----------------------------------文件信息------------------------------------
** 文件名称: ocs.c
** 创建人员: wht
** 创建日期: 2023-10-20
** 文档描述:
**
**----------------------------------版本信息------------------------------------
** 版本代号: V0.1
** 版本说明: 初始版本
**
**------------------------------------------------------------------------------
\********************************End of Head************************************/
#include "ocs.h"
#include "usart.h"

volatile uint8_t rxData, rxSum = 0;
volatile uint8_t rxLen = 0;
volatile uint8_t rxBuffer[15] = {0};
//volatile uint8_t rxFlag = 0;
volatile uint16_t o2Concent, o2Flow, o2temp;
volatile float f1,f2,f3;

/*******************************************************************************
** 函数名称: Bsp_Ocs_Receive_It
** 功能描述: 开启氧气流量传感器中断接收模式，开始接收下一个字节，每个字节都需要调用该函数开启中断方式接收
** 参数说明: None
** 返回说明: None
** 创建人员: wht
** 创建日期: 2023-10-20
**------------------------------------------------------------------------------
** 修改人员:wht
** 修改日期:
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
void Bsp_Ocs_Start_Receive_It ( void )
{
    HAL_UART_Receive_IT ( &huart5, ( uint8_t * ) &rxData, 1 );
}

void Bsp_Ocs_Abort_Receive_It ( void )
{
    HAL_UART_AbortReceive_IT ( &huart5 );
}

/* 11个字节：0x16,0x09,0x01,o2_concent_h8,o2_concent_l8,o2_flow_h8,o2_flow_l8,
o2_temp_h8,o2_temp_l8,ST1(0X00),ST2(0X00),crc?    所有12个字节累加和为0 ,   中间数据放大了10倍。 */

/*******************************************************************************
** 函数名称: HAL_UART_RxCpltCallback
** 功能描述:
** 参数说明: huart: [输入/出]
** 返回说明: None
** 创建人员: wht
** 创建日期: 2023-10-20
**------------------------------------------------------------------------------
** 修改人员:wht
** 修改日期:
** 数据: 16 09 01 01 F4 00 64 00 D2 00 00 B5
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
void HAL_UART_RxCpltCallback ( UART_HandleTypeDef *huart )
{
    uint8_t i;
    if ( huart->Instance == UART5 )
    {
        if ( ( rxLen == 0 && rxData != 0x16 ) || ( rxLen == 1 && rxData != 0x09 ) || ( rxLen == 2 && rxData != 0x01 ) )
        {
            rxLen = 0;
        }
        else
        {
            rxBuffer[rxLen++] = rxData;//接收数据
        }

        if ( rxLen >= 12 )
        {
            for ( i = 0; i < 12; i++ )
                rxSum += rxBuffer[i];
            if ( rxSum == 0 )
            {
                o2Concent = ( rxBuffer[3] << 8 ) | rxBuffer[4];
                o2Flow = ( rxBuffer[5] << 8 ) | rxBuffer[6];
                o2temp = ( rxBuffer[7] << 8 ) | rxBuffer[8];
							
                f1 = ( float ) o2Concent/10.0;
                f2 = ( float ) o2Flow/10.0;
                f3 = ( float ) o2temp/10.0;
							
//                rxFlag = 1;
            }
            rxLen = 0;
        }
        Bsp_Ocs_Start_Receive_It();
    }
}



// void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
/********************************End of File************************************/
